using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("Medal")]
	public class Medal : MonoClass
	{
		public enum Type
		{
			MEDAL_NOVICE,
			MEDAL_JOURNEYMAN,
			MEDAL_COPPER_A,
			MEDAL_COPPER_B,
			MEDAL_COPPER_C,
			MEDAL_SILVER_A,
			MEDAL_SILVER_B,
			MEDAL_SILVER_C,
			MEDAL_GOLD_A,
			MEDAL_GOLD_B,
			MEDAL_GOLD_C,
			MEDAL_PLATINUM_A,
			MEDAL_PLATINUM_B,
			MEDAL_PLATINUM_C,
			MEDAL_DIAMOND_A,
			MEDAL_DIAMOND_B,
			MEDAL_DIAMOND_C,
			MEDAL_MASTER_A,
			MEDAL_MASTER_B,
			MEDAL_MASTER_C,
			MEDAL_APPRENTICE
		}

		public static Type GRAND_MASTER_MEDAL_TYPE => MonoClass.smethod_6<Type>(TritonHs.MainAssemblyPath, "", "Medal", "GRAND_MASTER_MEDAL_TYPE");

		public Type m_medalType => method_2<Type>("m_medalType");

		public int m_grandMasterRank => method_2<int>("m_grandMasterRank");

		public Type MedalType => method_11<Type>("get_MedalType", Array.Empty<object>());

		public int GrandMasterRank => method_11<int>("get_GrandMasterRank", Array.Empty<object>());

		public Medal(IntPtr address, string className)
			: base(address, className)
		{
		}

		public Medal(IntPtr address)
			: this(address, "Medal")
		{
		}

		public bool IsGrandMaster()
		{
			return method_11<bool>("IsGrandMaster", Array.Empty<object>());
		}

		public int GetNumStars()
		{
			return method_11<int>("GetNumStars", Array.Empty<object>());
		}

		public string GetMedalName()
		{
			return method_13("GetMedalName");
		}

		public string GetBaseMedalName()
		{
			return method_13("GetBaseMedalName");
		}

		public string GetNextMedalName()
		{
			return method_13("GetNextMedalName");
		}

		public new string ToString()
		{
			return method_13("ToString");
		}

		public Medal GetNextMedal()
		{
			return method_14<Medal>("GetNextMedal", Array.Empty<object>());
		}

		public string GetStarString()
		{
			return method_13("GetStarString");
		}
	}
}
